export interface IotDeviceVO {
  /**
   * 设备 ID，主键，自增
   */
  id: string | number;

  /**
   * 设备唯一标识符，全局唯一，用于识别设备
   */
  deviceKey: string;

  /**
   * 设备名称，在产品内唯一，用于标识设备
   */
  deviceName: string;

  /**
   * 设备备注名称，供用户自定义备注
   */
  nickname: string;

  /**
   * 设备序列号
   */
  serialNumber: string;

  /**
   * 设备图片
   */
  picUrl: string;

  /**
   * 设备图片Url
   */
  picUrlUrl: string;
  /**
   * 设备分组编号集合
   */
  groupIds: string | number;

  /**
   * 房间 ID
   */
  roomId: string | number;

  /**
   * 产品 Key
   */
  productKey: string;

  /**
   * 设备类型，参见 IotDeviceTypeEnum 枚举
   */
  deviceType: number;

  /**
   * 设备种类，参见 IotDeviceTypeEnum 枚举
   */
  deviceClass?: number;

  /**
   * 网关设备 ID，子设备需要关联的网关设备 ID
   */
  gatewayId: string | number;

  /**
   * 设备状态，参见 IotDeviceStateEnum 枚举
   */
  state: number;

  /**
   * 合闸状态
   */
  keyStatus: number;
  /**
   * wifi锁
   */
  wifiLock: number;
  /**
   * 合闸锁
   */
  keyLock: number;
  /**
   * WiFi名称
   */
  ssid: string;

  /**
   * 最后上线时间
   */
  onlineTime: string;

  /**
   * 最后离线时间
   */
  offlineTime: string;

  /**
   * 设备激活时间
   */
  activeTime: string;

  /**
   * 设备的 IP 地址
   */
  ip: string;

  /**
   * 设备的固件编号
   */
  firmwareId: string | number;

  /**
   * 设备密钥，用于设备认证，需安全存储
   */
  deviceSecret: string;

  /**
   * MQTT 客户端 ID
   */
  mqttClientId: string | number;

  /**
   * MQTT 用户名
   */
  mqttUsername: string;

  /**
   * MQTT 密码
   */
  mqttPassword: string;

  /**
   * 订阅主题
   */
  mqttSubscribe: string;

  /**
   * 发布主题
   */
  mqttPublish: string;

  /**
   * 认证类型（如一机一密、动态注册）
   */
  authType: string;

  /**
   * 设备位置的纬度
   */
  latitude: number;

  /**
   * 设备位置的经度
   */
  longitude: number;

  /**
   * 地区编码
   */
  areaId: string | number;

  /**
   * 设备详细地址
   */
  address: string;

  /**
   * 设备配置，JSON 格式
   */
  config: string;

  /**
   * 备注
   */
  remark: string;
}

export interface IotDeviceForm extends BaseEntity {
  /**
   * 设备 ID，主键，自增
   */
  id?: string | number;

  /**
   * 设备唯一标识符，全局唯一，用于识别设备
   */
  deviceKey?: string;

  /**
   * 设备名称，在产品内唯一，用于标识设备
   */
  deviceName?: string;

  /**
   * 设备备注名称，供用户自定义备注
   */
  nickname?: string;

  /**
   * 设备序列号
   */
  serialNumber?: string;

  /**
   * 设备图片
   */
  picUrl?: string;

  /**
   * 设备分组编号集合
   */
  groupIds?: string | number;

  /**
   * 房间 ID
   */
  roomId?: string | number;

  /**
   * 产品 Key
   */
  productKey?: string;

  /**
   * 设备类型，参见 IotDeviceTypeEnum 枚举
   */
  deviceType?: number;

  /**
   * 设备种类，参见 IotDeviceTypeEnum 枚举
   */
  deviceClass?: number;

  /**
   * 网关设备 ID，子设备需要关联的网关设备 ID
   */
  gatewayId?: string | number;

  /**
   * 设备状态，参见 IotDeviceStateEnum 枚举
   */
  state?: number;

  /**
   * 合闸状态
   */
  keyStatus?: number;
  /**
   * wifi锁
   */
  wifiLock?: number;
  /**
   * 合闸锁
   */
  keyLock?: number;
  /**
   * WiFi名称
   */
  ssid?: string;

  /**
   * 最后上线时间
   */
  onlineTime?: string;

  /**
   * 最后离线时间
   */
  offlineTime?: string;

  /**
   * 设备激活时间
   */
  activeTime?: string;

  /**
   * 设备的 IP 地址
   */
  ip?: string;

  /**
   * 设备的固件编号
   */
  firmwareId?: string | number;

  /**
   * 设备密钥，用于设备认证，需安全存储
   */
  deviceSecret?: string;

  /**
   * MQTT 客户端 ID
   */
  mqttClientId?: string | number;

  /**
   * MQTT 用户名
   */
  mqttUsername?: string;

  /**
   * MQTT 密码
   */
  mqttPassword?: string;
  /**
   * 订阅主题
   */
  mqttSubscribe?: string;

  /**
   * 发布主题
   */
  mqttPublish?: string;

  /**
   * 认证类型（如一机一密、动态注册）
   */
  authType?: string;

  /**
   * 设备位置的纬度
   */
  latitude?: number;

  /**
   * 设备位置的经度
   */
  longitude?: number;

  /**
   * 地区编码
   */
  areaId?: string | number;

  /**
   * 设备详细地址
   */
  address?: string;

  /**
   * 设备配置，JSON 格式
   */
  config?: string;

  /**
   * 备注
   */
  remark?: string;
}

export interface IotDeviceQuery extends PageQuery {
  /**
   * 设备唯一标识符，全局唯一，用于识别设备
   */
  deviceKey?: string;

  /**
   * 设备名称，在产品内唯一，用于标识设备
   */
  deviceName?: string;

  /**
   * 设备备注名称，供用户自定义备注
   */
  nickname?: string;

  /**
   * 设备序列号
   */
  serialNumber?: string;

  /**
   * 设备图片
   */
  picUrl?: string;

  /**
   * 设备分组编号集合
   */
  groupIds?: string | number;

  /**
   * 房间 ID
   */
  roomId?: string | number;

  /**
   * 产品 Key
   */
  productKey?: string;

  /**
   * 设备类型，参见 IotDeviceTypeEnum 枚举
   */
  deviceType?: number;

  /**
   * 设备种类，参见 IotDeviceTypeEnum 枚举
   */
  deviceClass?: number;

  /**
   * 网关设备 ID，子设备需要关联的网关设备 ID
   */
  gatewayId?: string | number;

  /**
   * 设备状态，参见 IotDeviceStateEnum 枚举
   */
  state?: number;

  /**
   * 合闸状态
   */
  keyStatus?: number;
  /**
   * wifi锁
   */
  wifiLock?: number;
  /**
   * 合闸锁
   */
  keyLock?: number;
  /**
   * WiFi名称
   */
  ssid?: string;

  /**
   * 最后上线时间
   */
  onlineTime?: string;

  /**
   * 最后离线时间
   */
  offlineTime?: string;

  /**
   * 设备激活时间
   */
  activeTime?: string;

  /**
   * 设备的 IP 地址
   */
  ip?: string;

  /**
   * 设备的固件编号
   */
  firmwareId?: string | number;

  /**
   * 设备密钥，用于设备认证，需安全存储
   */
  deviceSecret?: string;

  /**
   * MQTT 客户端 ID
   */
  mqttClientId?: string | number;

  /**
   * MQTT 用户名
   */
  mqttUsername?: string;

  /**
   * MQTT 密码
   */
  mqttPassword?: string;

  /**
   * 订阅主题
   */
  mqttSubscribe?: string;

  /**
   * 发布主题
   */
  mqttPublish?: string;

  /**
   * 认证类型（如一机一密、动态注册）
   */
  authType?: string;

  /**
   * 设备位置的纬度
   */
  latitude?: number;

  /**
   * 设备位置的经度
   */
  longitude?: number;

  /**
   * 地区编码
   */
  areaId?: string | number;

  /**
   * 设备详细地址
   */
  address?: string;

  /**
   * 设备配置，JSON 格式
   */
  config?: string;

  /**
   * 日期范围参数
   */
  params?: any;
}
